package com.wgh.inventory.service;

import com.wgh.inventory.entity.Inventory;
import com.baomidou.mybatisplus.extension.service.IService;

/**
 * 库存服务接口
 */
public interface InventoryService extends IService<Inventory> {
    
    /**
     * 根据SKU ID获取库存信息
     * @param skuId SKU ID
     * @return 库存信息
     */
    Inventory getInventoryBySkuId(Long skuId);
    
    /**
     * 扣减库存
     * @param skuId SKU ID
     * @param quantity 扣减数量
     * @return 扣减结果
     */
    boolean decreaseInventory(Long skuId, Integer quantity);
    
    /**
     * 增加库存
     * @param skuId SKU ID
     * @param quantity 增加数量
     * @return 增加结果
     */
    boolean increaseInventory(Long skuId, Integer quantity);
    
    /**
     * 锁定库存
     * @param skuId SKU ID
     * @param quantity 锁定数量
     * @return 锁定结果
     */
    boolean lockInventory(Long skuId, Integer quantity);
    
    /**
     * 解锁库存
     * @param skuId SKU ID
     * @param quantity 解锁数量
     * @return 解锁结果
     */
    boolean unlockInventory(Long skuId, Integer quantity);
    
    /**
     * 检查库存是否充足
     * @param skuId SKU ID
     * @param quantity 检查数量
     * @return 库存是否充足
     */
    boolean checkInventory(Long skuId, Integer quantity);
    
    /**
     * 更新库存预警值
     * @param skuId SKU ID
     * @param warningQuantity 预警数量
     * @return 更新结果
     */
    boolean updateWarningQuantity(Long skuId, Integer warningQuantity);
    
    /**
     * 批量扣减库存
     * @param skuIds SKU ID列表
     * @param quantities 扣减数量列表
     * @return 扣减结果
     */
    boolean batchDecreaseInventory(Long[] skuIds, Integer[] quantities);
    
    /**
     * 获取库存预警列表
     * @return 库存预警列表
     */
    java.util.List<Inventory> getInventoryWarningList();
}